二、搭建MyBatis |
您所在的位置:网站首页 › info debug error › 二、搭建MyBatis |
1.开发环境 IDE:idea2021.1.1 构建工具:maven 3.5.4 MySQL版本:5.7 MyBatis版本:3.5.7 2.创建Maven工程 ①创建Maven工程 MyBatis_Test ②配置Maven环境 ③在pom.xml进行配置 配置打包方式是jar jar 添加相关依赖 org.mybatis mybatis 3.5.7 junit junit 4.12 test mysql mysql-connector-java 5.1.3 log4j log4j 1.2.173.创建MyBatis的核心配置文件 习惯上命名为mybatis-config.xml,这个文件名仅仅只是建议,并非强制要求。将来整合Spring之后,这个配置文件可以省略,所以大家操作时可以直接复制、粘贴。核心配置文件主要用于配置连接数据库的环境以及MyBatis的全局配置信息核心配置文件存放的位置是src/main/resources目录下4.创建mapper接口 MyBatis中的mapper接口相当于以前的dao。但是区别在于,mapper仅仅是接口,我们不需要提供实现类。①创建表t_user ②创建对应的实体类 创建JavaBean对象 ③创建mapper接口 5.创建MyBatis的映射文件 相关概念:ORM(Object Relationship Mapping)对象关系映射。 对象:Java的实体类对象关系:关系型数据库映射:二者之间的对应关系映射文件的命名规则 表所对应的实体类的类名+Mapper.xml例如:表t_user,映射的实体类是User,所对应的映射文件是UserMapper.xml因此一个映射文件对应一个实体类,对应一张表的操作MyBatis映射文件用于编写sql,访问以及操作表中的数据MyBatis映射文件存放的位置是src/main/resources/mappers目录下MyBatis中面向接口操作数据,保证两个一致 mapper接口的全类名和映射文件的命名空间(namespace)保持一致Mapper接口的方法的方法名和映射文件编写的SQL标签的id属性保持一致①在UserMapper.class ②UserMapper.xml insert t_user values (null,"test666","test666","test666")③完整的mybatis-config.xml配置类 6.通过junit测试添加功能 SqlSession:代表java程序和数据库之间的会话(HttpSession是Java程序和浏览器之间的会话)SqlSessionFactory:是“生产”SqlSession的工厂工厂模式:如果创建某一个对象,使用的过程基本固定,那么我们可以把创建这个对象的相关代码封装到一个“工厂类“中,以后都使用这个工厂类生产我们需要的对象。
7.优化功能,自动提交事务 在获取sqlSession对象时,使用SqlSession sqlSession = sqlSessionFactory.openSession(true);传入一个Boolean类型的参数,值为true,这样就可以自动提交 public class UserMapperTest { @Test public void insertUser() throws IOException { // 读取MyBatis的核心配置文件 InputStream is = Resources.getResourceAsStream("mybatis-config.xml"); // 获取SqlSessionFactoryBuilder对象 SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder(); // sqlSessionFactory SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is); // 获取sqlSession SqlSession sqlSession = sqlSessionFactory.openSession(true); // 获取mapper接口对象 UserMapper mapper = sqlSession.getMapper(UserMapper.class); // 测试功能 int result = mapper.insertUser(); if (result > 0){ System.out.println("成功"); }else { System.out.println("失败"); } } }8.加入log4j日志功能 在pom添加日志依赖 log4j log4j 1.2.172. 加入log4j的配置文件 log4j的配置文件名为log4j.xml,存放的位置是src/main/resources目录下 日志的级别:FATAL(致命)>ERROR(错误)>WARN(警告)>INFO(信息)>DEBUG(调试) 从左到右打印的内容越来越详细 9.通过junit测试修改和删除功能 ①在UserMapper接口下面写上修改和删除的方法名
②在UserMapper.xml写上对应的sql语句 [1]. mapper接口的全类名和映射文件的命名空间(namespace)保持一致 [2]. mapper接口的方法的方法名和映射文件编写的SQL标签的id属性保持一致
③测试功能 测试修改 @Test public void updateUser() throws IOException { // 读取MyBatis的核心配置文件 InputStream is = Resources.getResourceAsStream("mybatis-config.xml"); // 创建sqlSessionFactory SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is); // 创建sqlSession SqlSession sqlSession = sqlSessionFactory.openSession(true); // 获取mapper接口对象 UserMapper mapper = sqlSession.getMapper(UserMapper.class); //测试功能 int result = mapper.updateUser(); if (result > 0){ System.out.println("成功"); }else { System.out.println("失败"); } }2.测试删除 @Test public void deleteUser() throws IOException { // 读取配置文件 InputStream is = Resources.getResourceAsStream("mybatis-config.xml"); // 配置工厂 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is); // 创建SqlSession SqlSession sqlSession = sqlSessionFactory.openSession(true); // 获取mapper接口 UserMapper mapper = sqlSession.getMapper(UserMapper.class); // 执行删除方法 int result = mapper.deleteUser(); if (result > 0){ System.out.println("成功"); }else { System.out.println("失败"); } }10.测试查询功能 查询一个实体类对象①在UserMapper.java public interface UserMapper { // 查询一个实体类对象 User getUserById(); }②在UserMapper.xml select * from t_user where id = 43③测试 @Test public void select() throws IOException { // 读取配置文件 InputStream is = Resources.getResourceAsStream("mybatis-config.xml"); // 配置工厂 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is); // 创建SqlSession SqlSession sqlSession = sqlSessionFactory.openSession(true); // 获取mapper接口 UserMapper mapper = sqlSession.getMapper(UserMapper.class); // 执行删除方法 User user = mapper.getUserById(); System.out.println(user); }2.查询集合 ①在UserMapper.java public interface UserMapper { // 查询一个实体类对象 List getAllUser(); }②在UserMapper.xml select * from t_user③测试 @Test public void select() throws IOException { // 读取配置文件 InputStream is = Resources.getResourceAsStream("mybatis-config.xml"); // 配置工厂 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is); // 创建SqlSession SqlSession sqlSession = sqlSessionFactory.openSession(true); // 获取mapper接口 UserMapper mapper = sqlSession.getMapper(UserMapper.class); // 执行删除方法 List allUser = mapper.getAllUser(); for (User user:allUser) { System.out.println(user); } }【注意】 ①查询的标签select必须设置属性resultType或resultMap,用于设置实体类和数据库表的映射关系 resultType:自动映射,用于属性名和表中字段名一致的情况resultMap:自定义映射,用于一对多或多对一或字段名和属性名不一致情况②当查询的数据为多条时,不能使用实体类作为返回值,只能使用集合,否则会抛出异常TooManyResultsException;但是若查询的数据只有一条,可以使用实体类或集合作为返回值 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |